function net = initializeCNN()

f=1/100 ;
net.layers = {} ;
%conv 1
net.layers{end+1} = struct('type', 'conv', ...
                           'filters', f*randn(5,5,3,32, 'single'), ...
                           'biases', zeros(1, 32, 'single'), ...
                           'stride', 1, ...
                           'pad', 0) ;
%pool 1
net.layers{end+1} = struct('type', 'pool', ...
                           'method', 'max', ...
                           'pool', [2 2], ...
                           'stride', 2, ...
                           'pad', 0) ;
%relu 1                    
 net.layers{end+1} = struct('type', 'relu') ;
 
%conv2
net.layers{end+1} = struct('type', 'conv', ...
                           'filters', f*randn(5,5,32,50, 'single'),...
                           'biases', zeros(1,50,'single'), ...
                           'stride', 1, ...
                           'pad', 0) ;
                       
%pool2                       
net.layers{end+1} = struct('type', 'pool', ...
                           'method', 'max', ...
                           'pool', [2 2], ...
                           'stride', 2, ...
                           'pad', 0) ;
 %relu 2                  
 net.layers{end+1} = struct('type', 'relu') ;  
 
 
%conv3
net.layers{end+1} = struct('type', 'conv', ...
                           'filters', f*randn(4,4,50,500, 'single'),...
                           'biases', zeros(1,500,'single'), ...
                           'stride', 1, ...
                           'pad', 0) ;
%relu3                       
net.layers{end+1} = struct('type', 'relu') ;

%conv4
net.layers{end+1} = struct('type', 'conv', ...
                           'filters', f*randn(2,2,500,10, 'single'),...
                           'biases', zeros(1,10,'single'), ...
                           'stride', 1, ...
                           'pad', 0) ;
net.layers{end+1} = struct('type', 'softmaxloss') ;
